from fastapi import FastAPI, Request
import uvicorn
from fastapi.responses import JSONResponse
import ollama
from sent import sent

app = FastAPI()
alltext=[]
@app.post("/chatroom")
async def receive_chatroom_content(request: Request):
    try:
        # 从请求中获取 JSON 数据
        contents = await request.json()
        if not isinstance(contents, list):
            # 如果接收到的数据不是列表类型，返回错误响应
            return JSONResponse(content={"message": "数据必须是列表类型"}, status_code=400)
        # 这里可以对收到的数组进行处理，比如打印或保存到文件等
        # print("接收到的聊天内容数组:", contents)
        for content in contents[-5:]:
            if '：' in content:
                # print("接收到的聊天内容:", content)
                if content not in alltext:
                    print(content)
                    alltext.append(content)
                    back = ollama.chat(model="qwen2.5", messages=[{"role": "user",
                                                                   "content": "判断这句话是否一个问题，/"+content+"/,如果是问题，就回答，不是问题，就回答：不是问题，谢谢。"}],
                                       stream=False,  # 是否流式输出
                                       )
                    if back=='不是问题，谢谢。':
                        pass
                    else:
                        sent(back)
                    sent(content)
        return {"message": "数据接收成功"}
    except ValueError:
        # 如果 JSON 解析失败，返回错误响应
        return JSONResponse(content={"message": "无效的 JSON 数据"}, status_code=400)


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8001)
